/*
 ============================================================================
 Name        : reverse-text.c
 Author      : 
 Version     : 1.2
 Copyright   : Es libre para usarse
 Description : invierte el texto ingresado por el usuario en pantalla linea por linea (maximo de 1000 caracteres por linea)
 	 	 	 	 finaliza cuando el usuario ingresa EOF
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

char texto[1000];				//para guardar la cadena ingresada
char invertido[1000];			//para guardar la cadena invertida
int contador=0; 				//contador de caracteres por linea


void bienvenida(void){

	system("clear");			//limpia la pantalla de la consola
	printf("Ingrese una linea de texto y presione ENTER, cuando ya no quiera escribir mas ingrese EOF"
			"\nObservacion=maximo 1000 caracteres por linea\n\n");
}


void reverse(void){

	int i, j=0;

	for(i=contador; i>=0 ; i--, j++)		//invierte la cadena
		invertido[j]=texto[i-1];

	for(i=0; i<contador; i++)				//imprime la cadena invertida
		printf("%c", invertido[i]);

	 printf("\n\n");							//imprime una nueva linea para seguir cargando la siguiente linea

}

void reiniciar_texto(void){					// reinicia ambas cadenas utilizadas

	int i;

	for(i=0; i<1000; i++)	{
		texto[i]=0;
		invertido[i]=0;
	}
}

void carga_texto(void){

	char c;									//guarda caracter por caracter

	while ((c=getchar())!=EOF)				// carga hasta la condicion de fin
	{
		if (c!='\n'){						//carga la cadena
			texto[contador]=c;
			contador++;
		}
		else {								//cuando se termina de cargar la linea se llama a estas funciones
			reverse();
			reiniciar_texto();
			contador=0;
		}
	}

	printf("\n");							//imprime una nueva linea al finalizar la ejecucion del programa
}

int main(void) {

	bienvenida();							//llamada a funciones
	carga_texto();

	return 1;
}
